#ifndef REGISTRODISCO_H_
#define REGISTRODISCO_H_

#include <stdlib.h>
#include <stdio.h>
#include "Registro.h"
#include "ComponenteAlmacenamiento.h"
#include "../Dato.h"
#include "../../exceptions/DiscStorageException.h"
#include "../../exceptions/PKException.h"
#include "../../exceptions/NullPointerException.h"
#include "../../enums/TipoMemoria.h"

using namespace std;

class RegistroDisco : public Registro{
	private:
		int offset;
		FILE *fp;
		void escribirEnDisco(TipoSerializacion modo);

	public:
		RegistroDisco(TipoMemoria tipo, int tamanio, FILE* fp);
		RegistroDisco(TipoMemoria tipo, int tamanio, FILE* fp, Dato *dato);
		void getAccesoDato(void **accesoDato);
		int getId();
		void leer(Dato *datoLeido, TipoSerializacion modo);
		void leer(char **regLeido, TipoSerializacion modo);
		void escribir(void *accesoDisco, TipoSerializacion modo);
		void escribir(TipoSerializacion modo);
		void escribir(void *accesoDisco, Dato *dato, TipoSerializacion modo);
		void borrar();
};

#endif /*REGISTRODISCO_H_*/
